home *** CD-ROM | disk | FTP | other *** search
/ Libris Britannia 4 / science library(b).zip / science library(b) / MATHEMAT / STATISTI / 0850C.ZIP / SET1-3.ARC / TUKEY.PAS < prev   
Pascal/Delphi Source File  |  1979-12-31  |  6KB  |  179 lines

  1. VAR I,J,SWITCH4,D,DF1,NG,DF,NUMSAMPS:INTEGER;
  2.     MH,MST,HSD,HSD1,MS,COEFF:REAL;
  3.     NVAR1,NVAR2,NVAR3,NVAR4,NVAR5,NVAR6,NVAR7,NVAR8,NVAR9,NVAR10:REAL;
  4.     SWITCH3,C:CHAR;
  5.     SWITCH2:BOOLEAN;
  6.     N:ARRAY [1..5000] OF INTEGER;
  7.     M:ARRAY [1..5000] OF REAL;
  8.  
  9. PROCEDURE FINDCRITICALVALUES (DEGFREE:INTEGER);
  10. VAR TEMP1,TEMP2:REAL;
  11.  
  12. PROCEDURE VALS(NV1,NV2,NV3,NV4,NV5,NV6,NV7,NV8,NV9,NV10:REAL);
  13. BEGIN
  14. NVAR1:=NV1;
  15. NVAR2:=NV2;
  16. NVAR3:=NV3;
  17. NVAR4:=NV4;
  18. NVAR5:=NV5;
  19. NVAR6:=NV6;
  20. NVAR7:=NV7;
  21. NVAR8:=NV8;
  22. NVAR9:=NV9;
  23. NVAR10:=NV10;
  24. END;
  25.  
  26. PROCEDURE LOOKUP (DF:INTEGER);
  27. BEGIN
  28. CASE DF OF
  29. 1: VALS (3.64,4.60,5.22,5.67,6.03,6.33,6.58,6.80,6.99,7.17);
  30. 2: VALS (3.46,4.34,4.90,5.30,5.63,5.90,6.12,6.32,6.49,6.65);
  31. 3: VALS (3.34,4.16,4.68,5.06,5.36,5.61,5.82,6.00,6.16,6.30);
  32. 4: VALS (3.26,4.04,4.53,4.89,5.17,5.40,5.60,5.77,5.92,6.05);
  33. 5: VALS (3.20,3.95,4.41,4.76,5.02,5.24,5.43,5.59,5.74,5.87);
  34. 6: VALS (3.15,3.88,4.33,4.65,4.91,5.12,5.30,5.46,5.60,5.72);
  35. 7: VALS (3.11,3.82,4.26,4.57,4.82,5.03,5.20,5.35,5.49,5.62);
  36. 8: VALS (3.08,3.77,4.20,4.51,4.75,4.95,5.12,5.27,5.39,5.51);
  37. 9: VALS (3.06,3.73,4.15,4.45,4.69,4.88,5.05,5.19,5.32,5.43);
  38. 10: VALS (3.03,3.70,4.11,4.41,4.64,4.83,4.99,5.13,5.25,5.36);
  39. 11: VALS (3.01,3.67,4.08,4.37,4.59,4.78,4.94,5.08,5.20,5.31);
  40. 12: VALS (3.00,3.65,4.05,4.33,4.56,4.74,4.90,5.03,5.15,5.26);
  41. 13: VALS (2.98,3.63,4.02,4.30,4.52,4.70,4.86,4.99,5.11,5.21);
  42. 14: VALS (2.97,3.61,4.00,4.28,4.49,4.67,4.82,4.96,5.07,5.17);
  43. 15: VALS (2.96,3.59,3.98,4.25,4.47,4.65,4.79,4.92,5.04,5.14);
  44. 16: VALS (2.95,3.58,3.96,4.23,4.45,4.62,4.77,4.90,5.01,5.11);
  45. 17: VALS (2.92,3.53,3.90,4.17,4.37,4.54,4.68,4.81,4.92,5.01);
  46. 18: VALS (2.89,3.49,3.85,4.10,4.30,4.46,4.60,4.72,4.82,4.92);
  47. 19: VALS (2.86,3.44,3.79,4.04,4.23,4.39,4.52,4.63,4.73,4.82);
  48. 20: VALS (2.83,3.40,3.74,3.98,4.16,4.31,4.44,4.55,4.65,4.73);
  49. 21: VALS (2.80,3.36,3.68,3.92,4.10,4.24,4.36,4.47,4.56,4.64);
  50. 22: VALS (5.70,6.98,7.80,8.42,8.91,9.32,9.67,9.97,10.24,10.48);
  51. 23: VALS (5.24,6.33,7.03,7.56,7.97,8.32,8.61,8.87,9.10,9.30);
  52. 24: VALS (4.95,5.92,6.54,7.01,7.37,7.68,7.94,8.17,8.37,8.55);
  53. 25: VALS (4.75,5.64,6.20,6.62,6.96,7.24,7.47,7.68,7.86,8.03);
  54. 26: VALS (4.60,5.43,5.96,6.35,6.66,6.91,7.13,7.33,7.49,7.65);
  55. 27: VALS (4.48,5.27,5.77,6.14,6.43,6.67,6.87,7.05,7.21,7.36);
  56. 28: VALS (4.39,5.15,5.62,5.97,6.25,6.48,6.67,6.84,6.99,7.13);
  57. 29: VALS (4.23,5.05,5.50,5.84,6.10,6.32,6.51,6.67,6.81,6.94);
  58. 30: VALS (4.26,4.96,5.40,5.73,5.98,6.19,6.37,6.53,6.67,6.79);
  59. 31: VALS (4.21,4.89,5.32,5.63,5.88,6.08,6.26,6.41,6.54,6.66);
  60. 32: VALS (4.17,4.84,5.25,5.56,5.80,5.99,6.16,6.31,6.44,6.55);
  61. 33: VALS (4.13,4.79,5.19,5.49,5.72,5.92,6.08,6.22,6.35,6.46);
  62. 34: VALS (4.10,4.74,5.14,5.43,5.66,5.85,6.01,6.15,6.27,6.38);
  63. 35: VALS (4.07,4.70,5.09,5.38,5.60,5.79,5.94,6.08,6.20,6.31);
  64. 36: VALS (4.05,4.67,5.05,5.33,5.55,5.73,5.89,6.02,6.14,6.25);
  65. 37: VALS (4.02,4.64,5.02,5.29,5.51,5.69,5.84,5.97,6.09,6.19);
  66. 38: VALS (3.96,4.55,4.91,5.17,5.37,5.54,5.69,5.81,5.92,6.02);
  67. 39: VALS (3.89,4.45,4.80,5.05,5.24,5.40,5.54,5.65,5.76,5.85);
  68. 40: VALS (3.82,4.37,4.70,4.93,5.11,5.26,5.39,5.50,5.60,5.69);
  69. 41: VALS (3.76,4.28,4.59,4.82,4.99,5.13,5.25,5.36,5.45,5.53);
  70. 42: VALS (3.70,4.20,4.50,4.71,4.87,5.01,5.12,5.21,5.30,5.37);
  71. END;
  72. END;
  73.  
  74. BEGIN
  75. LOOKUP (DEGFREE);
  76. IF NG=2 THEN HSD:=NVAR1;
  77. IF NG=3 THEN HSD:=NVAR2;
  78. IF NG=4 THEN HSD:=NVAR3;
  79. IF NG=5 THEN HSD:=NVAR4;
  80. IF NG=6 THEN HSD:=NVAR5;
  81. IF NG=7 THEN HSD:=NVAR6;
  82. IF NG=8 THEN HSD:=NVAR7;
  83. IF NG=9 THEN HSD:=NVAR8;
  84. IF NG=10 THEN HSD:=NVAR9;
  85. IF NG=11 THEN HSD:=NVAR10;
  86. HSD:=HSD*SQRT(MS/MH);
  87. WRITELN ('HONEST SIGNIFICANT DIFFERENCE AT .05 = ',HSD:8:3);
  88. IF SWITCH4=1 THEN BEGIN
  89. WRITELN (LST,'HONEST SIGNIFICANT DIFFERENCE AT .05 = ',HSD:8:3);
  90. END;
  91. LOOKUP (DEGFREE+21);
  92. IF NG=2 THEN HSD1:=NVAR1;
  93. IF NG=3 THEN HSD1:=NVAR2;
  94. IF NG=4 THEN HSD1:=NVAR3;
  95. IF NG=5 THEN HSD1:=NVAR4;
  96. IF NG=6 THEN HSD1:=NVAR5;
  97. IF NG=7 THEN HSD1:=NVAR6;
  98. IF NG=8 THEN HSD1:=NVAR7;
  99. IF NG=9 THEN HSD1:=NVAR8;
  100. IF NG=10 THEN HSD1:=NVAR9;
  101. IF NG=11 THEN HSD1:=NVAR10;
  102. HSD1:=HSD1*SQRT(MS/MH);
  103. WRITELN ('HONEST SIGNIFICANT DIFFERENCE AT .01 = ',HSD1:8:3);
  104. IF SWITCH4=1 THEN BEGIN
  105. WRITELN (LST,'HONEST SIGNIFICANT DIFFERENCE AT .01 = ',HSD1:8:3);
  106. END;
  107. FOR I:=1 TO NG-1 DO
  108. FOR J:=I TO NG-1 DO
  109. BEGIN
  110. MST:=M[I]-M[J+1];
  111. WRITELN ('DIFFERENCE OF MEAN ',I:3,' AND MEAN ',J+1:3,' IS ',MST:8:3);
  112. IF MST>HSD THEN WRITELN (' ':15,'SIGNIFICANT *');
  113. IF MST>HSD1 THEN WRITELN (' ':15,'SIGNIFICANT **');
  114. IF SWITCH4=1 THEN BEGIN
  115. WRITELN (LST,'DIFFERENCE OF MEAN ',I:3,' AND MEAN ',J+1:3,' IS ',MST:8:3);
  116. IF MST>HSD THEN WRITELN (LST,' ':15,'SIGNIFICANT *');
  117. IF MST>HSD1 THEN WRITELN (LST,' ':15,'SIGNIFICANT **');
  118. END;
  119. END;
  120. END;
  121.  
  122. BEGIN
  123. REPEAT
  124. WRITELN ('TUKEY TEST');
  125. WRITE ('DO YOU WANT A PRINTOUT (Y/N)');
  126. READLN (SWITCH3);
  127. IF SWITCH3='Y' THEN SWITCH4:=1;
  128. IF SWITCH3='y' THEN SWITCH4:=1;
  129. IF SWITCH4=1 THEN BEGIN
  130. WRITELN (LST,'TUKEY TEST');
  131. END;
  132. WRITE ('NUMBER OF GROUPS = ');
  133. READLN (NG);
  134. WRITE ('MEAN SQUARED ERROR OF GROUPS = ');
  135. READLN (MS);
  136. WRITE ('DF OF THE ERROR TERM = ');
  137. READLN (DF1);
  138. IF SWITCH4=1 THEN BEGIN
  139. WRITELN (LST,'NUMBER OF GROUPS = ',NG);
  140. WRITELN (LST,'MEAN SQUARED ERROR OF GROUPS = ',MS:8:3);
  141. WRITELN (LST,'DF OF THE ERROR TERM = ',DF1);
  142. END;
  143. FOR I:=1 TO NG DO
  144. BEGIN
  145. WRITE ('ENTER NUMBER OF SAMPLES IN MEAN ',I:3,' = ');
  146. READLN (N[I]);
  147. WRITE ('ENTER MEAN ',I:3,' = ');
  148. READLN (M[I]);
  149. IF SWITCH4=1 THEN BEGIN
  150. WRITELN (LST,'ENTER NUMBER OF SAMPLES IN MEAN ',I:3,' = ',N[I]);
  151. WRITELN (LST,'ENTER MEAN ',I:3,' = ',M[I]:8:3);
  152. END;
  153. END;
  154. MH:=0;
  155. FOR I:=1 TO NG DO
  156. MH:=MH+(1/N[I]);
  157. MH:=NG/MH;
  158. D:=DF1;
  159. NUMSAMPS:=D;
  160. IF D>119 THEN NUMSAMPS:=21;
  161. IF D>59 THEN NUMSAMPS:=20;
  162. IF D>39 THEN NUMSAMPS:=19;
  163. IF D>29 THEN NUMSAMPS:=18;
  164. IF D>23 THEN NUMSAMPS:=17;
  165. IF D>19 THEN NUMSAMPS:=16;
  166. IF D<20 THEN NUMSAMPS:=D-4;
  167. FINDCRITICALVALUES (NUMSAMPS);
  168. WRITE ('DO YOU WANT ANOTHER RUN, (Y/N): ');
  169. READLN (C);
  170. WHILE NOT (C IN ['Y','y','n','N']) DO
  171. BEGIN
  172. WRITE ('TYPE Y FOR YES, OR N FOR NO: ');
  173. READLN (C)
  174. END;
  175. SWITCH2:=C IN ['N','n'];
  176. UNTIL SWITCH2
  177. END.
  178.  
  179.